//Clase creada para controles y metodos de soporte al juego
package Interfaz;
import java.util.*;

/**
 *
 * @author Daniel
 */
public class Utilidad {

    //Metodo usado para validar datos lineales ingresados por pantalla, entre un maximo y un minimo que se pasaran por parametro
    public static int validarDato(int maximo, int minimo, String mensajeError) {
        boolean ok = false;
        int auxiliar = 0;

        Scanner in = new Scanner(System.in);
        while (!ok) {
            try {
                auxiliar = in.nextInt();
                if ((auxiliar >= minimo) && (auxiliar < maximo + 1)) {
                    return auxiliar;
                }
                System.out.print(mensajeError);
            } catch (InputMismatchException e) {
                System.out.print(mensajeError);
                in.next();
            }
        }
        return auxiliar;
    }
        
    //Metodo utilizado para validar el tamaño del tablero seleccionado
    public static int validarTamanoTablero(){
        boolean ok = false;
        int tamTab = -1;
        
        Scanner in = new Scanner(System.in);
        while(!ok){
            try{
                tamTab = in.nextInt();                
                if((tamTab == 4)||(tamTab == 6)||(tamTab==8)){
                    System.out.println();
                    System.out.println("Tamaño de tablero establecido correctamente en:"+tamTab);
                    System.out.println();
                    return tamTab;
                }
                System.out.println();
                System.out.println("ALERTA - El tamaño del tablero es incorrecto.");               
                System.out.println("ALERTA - Las opciones validas son 4,6 y 8.");
                System.out.println();
                System.out.print("Por favor, reintente:");
                
            } catch(InputMismatchException e){
                System.out.println();
                System.out.println("ALERTA - El dato ingresado no es del formato esperado.");
                System.out.println("ALERTA - El dato ingresado no es correcto.");
                System.out.println();
                System.out.print("Por favor, reingrese el tamano del tablero:");
                in.next();
            }
        }       
        return tamTab;
    }
    
    //Metodo utilizado para validar el tamaño del panel
    public static int validarTamanoPanel(int tamTab) {
        int tamPanel = -1;
        boolean ok = false;

        Scanner in = new Scanner(System.in);
        System.out.println();
        System.out.println("INFO - Los tamanos posibles del panel son:");
        System.out.println("INFO - Si el tamano del tablero es 8 -> 4,3 y 2");
        System.out.println("INFO - Si el tamano del tablero es 6 -> 3 y 2");
        System.out.println("INFO - Si el tamano del tablero es 4 -> 2");
        System.out.println();
        while (!ok) {
            try {                
                if (tamTab == 4){
                        tamPanel = 2;
                        System.out.println();
                        System.out.println("De acuerdo a la definicion del juego y dado que el tablero es tamano 4.");                        
                        System.out.println("El tamaño del panel queda establecido automaticametne en 2");
                        System.out.println();
                        ok = true;
                }else{
                    System.out.println();
                    System.out.print("Ingrese la dimension del panel para esta partida:");
                    tamPanel = in.nextInt();
                    System.out.println();
                    if (tamTab == 6){
                        if ((tamPanel == 2) || (tamPanel == 3)) {
                            System.out.println();
                            System.out.println("Validado el tamano del panel.");                           
                            System.out.println("El tamaño del panel queda establecido en:" + tamPanel);
                            System.out.println();
                            ok = true;
                        }
                    }else{
                        if(tamTab == 8){
                            if ((tamPanel == 2) || (tamPanel == 3) || (tamPanel == 4)) {
                            System.out.println();
                            System.out.println("Validado el tamano del panel.");                            
                            System.out.println("El tamaño del panel queda establecido en:" + tamPanel);
                            System.out.println();
                            ok = true;
                        }
                        }
                    }
                }
                if (!ok) {
                    System.out.println();
                    System.out.println("ALERTA - El tamano del panel ingresado no esta permitido.");
                    System.out.println("ALERTA - Los tamanos posibles del panel son:");
                    System.out.println("");
                    System.out.println("INFO - Si el tamano del tablero es 8 -> 4,3 y 2");
                    System.out.println("INFO - Si el tamano del tablero es 6 -> 3 y 2");
                    System.out.println("INFO - Si el tamano del tablero es 4 -> 2");
                    System.out.println();
                }

            } catch (InputMismatchException e) {
                System.out.println();
                System.out.println("ALERTA - El dato ingresado no es del formato esperado.");
                System.out.println("ALERTA - El dato ingresado no es correcto.");
                System.out.println();
                System.out.print("Por favor, reingrese el tamano del panel:");
                in.next();
            }

        }
        return tamPanel;
    }

    public static int validarCantFichas(int tamTab, int tamPan){
        int cantFichas=-1, cantFichasMax;        
        boolean ok = false;        
        
        Scanner in = new Scanner(System.in);
        cantFichasMax = ((tamTab * tamTab) + (tamPan * tamPan)) / 2;
        System.out.println();
        System.out.println("INFO - Para continuar debera seleccionar la cantidad de fichas que jugara cada contendiente.");
        System.out.println("INFO - Le informamos que la mayor cantidad de fichas que podra jugar es:" + cantFichasMax);
        System.out.println();
        System.out.print("Por favor, ingrese la cantidad de fichas para el juego:");
        while (!ok) {
            try{
                cantFichas = in.nextInt();                
                
                if(cantFichas<=cantFichasMax){
                    System.out.println();
                    System.out.println("INFO - Ingreso valido.");                    
                    System.out.println("INFO - La cantidad de fichas a jugar seran:"+cantFichas);                    
                    System.out.println("INFO - Disfrute la partida.");
                    System.out.println();
                    return cantFichas;
                }else{
                    System.out.println();
                    System.out.println("ALERTA - El valor ingresado es incorrecto.");                    
                    System.out.println("ALERTA - Debe ingresar un numero entero menor o igual a:"+cantFichasMax);
                    System.out.println();
                    System.out.print("Por favor, reintente:");
                }
                
                
            } catch(InputMismatchException e){
                System.out.println();
                System.out.print("ALERTA - El dato ingresado no es del formato esperado.");
                System.out.print("ALERTA - El dato ingresado no es correcto.");
                System.out.println();
                System.out.print("Por favor, reingrese la cantidad de fichas a jugar:");
                in.next();
            }
        }
        
        return cantFichas;
    }
    
    public static int deStringAnumero(String unIndice){
		int indice = -1;
		String columnaA="A";
		String columnaB="B";
		String columnaC="C";
		String columnaD="D";
		String columnaE="E";
		String columnaF="F";
		String columnaG="G";
		String columnaH="H";
		
		
		if (columnaA.equals(unIndice)) {
			indice=0;
			return indice;
		}
		if (columnaB.equals(unIndice)) {
			indice=1;
			return indice;
		}
		if (columnaC.equals(unIndice)) {
			indice=2;
			return indice;
		}
		if (columnaD.equals(unIndice)) {
			indice=3;
			return indice;
		}
		if (columnaE.equals(unIndice)) {
			indice=4;
			return indice;
		}
		if (columnaF.equals(unIndice)) {
			indice=5;
			return indice;
		}
		if (columnaG.equals(unIndice)) {
			indice=6;
			return indice;
		}
		if (columnaH.equals(unIndice)) {
			indice=7;
			return indice;
		}		
		return indice;	
	}
	
	public static String devuelvoPrimerLugar(String unaJugada){
		return unaJugada.substring(0, 1);
	}
	public static String devuelvoSegundoLugar(String unaJugada){
		return unaJugada.substring(1, 2);
	}
	public static String devuelvoTercerLugar(String unaJugada){
		return unaJugada.substring(2, 3);
	}
    
       
    
    
}
    
